package com.sjz.myfrist;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

/******
 *   首先定义一个内部类ViewHolder，继承自RecyclerView.ViewHolder，然后在构造函数中传入View参数，这个参数通常是RecyclerView子项的最外层布局，
 *   然后可以通过findViewById()方法来获取到布局中的ImageView和TextView实例了。  adapter的构造函数，用于把展示的数据源传进来。
     adapter继承自RecyclerView.Adapter，需要重写onCreateViewHolder()、onBindViewHolder()、getItemCount()这3个方法。
     onCreateViewHolder()方法是用于创建ViewHolder实例的；onBindViewHolder()方法用于对RecyclerView子项数据赋值，会在子项被滚动到屏幕内的时候执行，
     通过position参数获取到当前项的实例，再设置到ImageView和TextView当中；getItemCount()方法用于告诉RecyclerView一共有多少子项，直接返回长度。
 *
 */
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    private List<Image> list;
    static class ViewHolder extends RecyclerView.ViewHolder{
        View imageView;
        ImageView image;
        TextView name;
        public ViewHolder(View view){
            super(view);
            imageView = view;
            image = (ImageView) view.findViewById(R.id.recycleview_image);
            name = (TextView) view.findViewById(R.id.recycleview_name);
        }
    }

    public RecyclerViewAdapter(List<Image> list2){
        list = list2;
    }

    /***
     * onCreateViewHolder()方法是用于创建ViewHolder实例的
     * @param parent
     * @param viewType
     * @return
     */
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
     //   View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,parent,false);  //最原始的方式
       // View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item2,parent,false);//横向配置 对应的xml
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item3,parent,false);//2、瀑布流布局
        ViewHolder holder = new ViewHolder(view);
        //触发行点击事件
         holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position = holder.getAbsoluteAdapterPosition();
                Image image = list.get(position);
                Toast.makeText(view.getContext(), "你点击了"+image.getName(), Toast.LENGTH_SHORT).show();
            }
        });
        return holder;
    }

    /****
     * onBindViewHolder()方法用于对RecyclerView子项数据赋值，会在子项被滚动到屏幕内的时候执行，
     *  通过position参数获取到当前项的实例，再设置到ImageView和TextView当中；
     * @param holder
     * @param position
     */
    public void onBindViewHolder(ViewHolder holder,int position){
        Image image = list.get(position);
        holder.image.setImageResource(image.getImageId());
        holder.name.setText(image.getName());
    }

    /****
     * getItemCount()方法用于告诉RecyclerView一共有多少子项，直接返回长度。
     * @return
     */
    public int getItemCount(){
        return list.size();
    }
}